qx.Class.define("caraffa.widgets.CajaIngresoDiario",
{	
	extend : qx.ui.core.Widget,
	construct : function (usuario)
	{
		this.base(arguments);

		this._setLayout(new qx.ui.layout.Basic());
		
		var model = new qx.ui.table.model.Simple();
		model.setColumns(["Medico", "Forma de Pago", "Prestacion", "Importe", "Tipo"]);
		this._grdCajaIngresoDiario = new qx.ui.table.Table(model);
			this._grdCajaIngresoDiario.setColumnWidth(0, 200);
			this._grdCajaIngresoDiario.setColumnWidth(1, 230);
			this._grdCajaIngresoDiario.setColumnWidth(2, 230);
			this._grdCajaIngresoDiario.setColumnWidth(3, 80);
			this._grdCajaIngresoDiario.setColumnWidth(4, 70);
			this._grdCajaIngresoDiario.setWidth(850);
			this._grdCajaIngresoDiario.setHeight(350);
			this._grdCajaIngresoDiario.setColumnVisibilityButtonVisible(false);
			this._grdCajaIngresoDiario.setShowCellFocusIndicator(true);
			this._grdCajaIngresoDiario.setStatusBarVisible(false);

		var rndImporte = new qx.ui.table.cellrenderer.Number("right");
		var frmImporte = new qx.util.format.NumberFormat();
			frmImporte.setPrefix("$");
			frmImporte.setMaximumFractionDigits(2);
			frmImporte.setMinimumFractionDigits(2);
			rndImporte.setNumberFormat(frmImporte);
		
		this._grdCajaIngresoDiario.getTableColumnModel().setDataCellRenderer(3, rndImporte);
		
		this._txdDia = new qx.ui.form.ow.DateText("Fecha:");
		if(usuario == 1 || usuario == 5) this._txdDia.setEnabled(true)
		else this._txdDia.setEnabled(false);

			this._txdDia.getLabel().setWidth(50);
			this._txdDia.getDateText().setWidth(100);
		
		this._cmbFiltraMedico = new qx.ui.form.ow.ComboBox("Medico:", [{value:"0", label:"TODOS"}]);
			this._cmbFiltraMedico.getLabel().setWidth(70);
		
		this._btnImprimir = new qx.ui.form.Button("Imprimir");
		
		this._cmbTipoIngreso = new qx.ui.form.ow.ComboBox("Tipo de Ingreso:", [{value:"TODOS", label:"TODOS"}, {value:"PAR", label:"PARTICULARES"}, {value:"PARM", label:"PARTICULARES MINIMO"}, {value:"PLUS", label:"PLUS"}]);

		this._lblTotal = new qx.ui.basic.Label("<big><b>Total: $ </b></big>").set({rich:true});
		
		this._attachEvents();
		
		this._initForm();
		
		this._add(this._txdDia, {left:10, top:10});
		this._add(this._cmbFiltraMedico, {left:200, top:10});
		this._add(this._cmbTipoIngreso, {left:500, top:10});
		this._add(this._grdCajaIngresoDiario, {left:10, top:40});
		this._add(this._lblTotal, {left:620, top:400});
		this._add(this._btnImprimir, {left:800, top:400});
	},
	members :
	{
		_txdDia : null,
		_cmbFiltraMedico : null,
		_cmbTipoIngreso : null,
		_grdCajaIngresoDiario : null,
		_attachEvents : function ()
		{
			this._txdDia.getDateText().addListener("changeValue", this._getDatos, this);
			this._cmbFiltraMedico.addListener("changeValue", this._getDatos, this);
			this._cmbTipoIngreso.addListener("changeValue", this._getDatos, this);
			this._btnImprimir.addListener("execute", function () {
				window.open('reports/CajaIngresoDiario.php?dia=' + this._txdDia.getValue() + '&medico=' + this._cmbFiltraMedico.getValue() + '&medicoNombre=' + this._cmbFiltraMedico.getValueDisplay() + '&tipo_ingreso=' + this._cmbTipoIngreso.getValue(),'','top=0,width=1024,height=600,scrollbars=1');
//				params.dia = this._txdDia.getValue();
//				params.medico = this._cmbFiltraMedico.getValue();
//				params.tipo_ingreso = this._cmbTipoIngreso.getValue();
			}, this);
		},
		_initForm : function ()
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("CajaIngresoDiario");
			try
			{
				var result = rpc.callSync("getMedicos");
				for (var i in result)
				{
					this._cmbFiltraMedico.addValue(result[i]);
				}
			}
			catch (ex)
			{
				alert(ex);
			}
			
			this._getDatos();
		},
		_getDatos : function ()
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("CajaIngresoDiario");
			var params = new Object();
			params.dia = this._txdDia.getValue();
			params.medico = this._cmbFiltraMedico.getValue();
			params.tipo_ingreso = this._cmbTipoIngreso.getValue();
			try
			{
				var result = rpc.callSync("getCajaIngresoDiario", params);
				this._grdCajaIngresoDiario.getTableModel().setData(result);
				var total = 0;
				for (var i=0, count = this._grdCajaIngresoDiario.getTableModel().getRowCount(); i< count; i++)
				{
					total += parseFloat(this._grdCajaIngresoDiario.getTableModel().getValue(3, i));
				}
				if (isNaN(total))
					total = 0;
				
				total=Math.round(total*100)/100
				total=total.toFixed(2)
				this._lblTotal.setValue("<big><b>Total: $ </b></big>" + total + "");

			}
			catch (ex)
			{
				alert(ex);
			}

		}
	}
});
